{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# TensorFlow2.0教程-使用RNN实现文本分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.0.0-alpha0\n"
     ]
    }
   ],
   "source": [
    "from __future__ import absolute_import, division, print_function, unicode_literals\n",
    "import tensorflow as tf\n",
    "import tensorflow.keras as keras\n",
    "print(tf.__version__)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.使用tensorflow_datasets 构造输入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[31mspacy 2.0.18 has requirement numpy>=1.15.0, but you'll have numpy 1.14.3 which is incompatible.\u001b[0m\n",
      "\u001b[31mplotnine 0.5.1 has requirement matplotlib>=3.0.0, but you'll have matplotlib 2.2.2 which is incompatible.\u001b[0m\n",
      "\u001b[31mplotnine 0.5.1 has requirement pandas>=0.23.4, but you'll have pandas 0.23.0 which is incompatible.\u001b[0m\n",
      "\u001b[31mneo4j-driver 1.6.2 has requirement neotime==1.0.0, but you'll have neotime 1.7.2 which is incompatible.\u001b[0m\n",
      "\u001b[31mmizani 0.5.3 has requirement pandas>=0.23.4, but you'll have pandas 0.23.0 which is incompatible.\u001b[0m\n",
      "\u001b[31mfastai 0.7.0 has requirement torch<0.4, but you'll have torch 0.4.1 which is incompatible.\u001b[0m\n",
      "\u001b[33mYou are using pip version 10.0.1, however version 19.1 is available.\n",
      "You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "!pip install -q tensorflow_datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow_datasets as tfds\n",
    "dataset, info = tfds.load('imdb_reviews/subwords8k', with_info=True,\n",
    "                         as_supervised=True) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "获取训练集、测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_dataset, test_dataset = dataset['train'], dataset['test']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "获取tokenizer对象，用进行字符处理级id转换（这里先转换成subword，再转换为id）等操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "vocabulary size:  8185\n"
     ]
    }
   ],
   "source": [
    "tokenizer = info.features['text'].encoder\n",
    "print('vocabulary size: ', tokenizer.vocab_size)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "token对象测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tokened id:  [4025, 222, 2621, 1199, 6307, 2327, 2934]\n",
      "original string:  Hello word , Tensorflow\n"
     ]
    }
   ],
   "source": [
    "sample_string = 'Hello word , Tensorflow'\n",
    "tokenized_string = tokenizer.encode(sample_string)\n",
    "print('tokened id: ', tokenized_string)\n",
    "\n",
    "# 解码会原字符串\n",
    "src_string = tokenizer.decode(tokenized_string)\n",
    "print('original string: ', src_string)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "解出每个subword"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4025->[Hell]\n",
      "222->[o ]\n",
      "2621->[word]\n",
      "1199->[ , ]\n",
      "6307->[Ten]\n",
      "2327->[sor]\n",
      "2934->[flow]\n"
     ]
    }
   ],
   "source": [
    "for t in tokenized_string:\n",
    "    print(str(t)+'->['+tokenizer.decode([t])+ ']')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "构建批次训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "BUFFER_SIZE=10000\n",
    "BATCH_SIZE = 64\n",
    "\n",
    "train_dataset = train_dataset.shuffle(BUFFER_SIZE)\n",
    "train_dataset = train_dataset.padded_batch(BATCH_SIZE, train_dataset.output_shapes)\n",
    "\n",
    "test_dataset = test_dataset.padded_batch(BATCH_SIZE, test_dataset.output_shapes)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型构建\n",
    "下面，因为此处的句子是变长的，所以只能使用序列模型，而不能使用keras的函数api"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# def get_model():\n",
    "#     inputs = tf.keras.Input((1240,))\n",
    "#     emb = tf.keras.layers.Embedding(tokenizer.vocab_size, 64)(inputs)\n",
    "#     h1 = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64))(emb)\n",
    "#     h1 = tf.keras.layers.Dense(64, activation='relu')(h1)\n",
    "#     outputs = tf.keras.layers.Dense(1, activation='sigmoid')(h1)\n",
    "#     model = tf.keras.Model(inputs, outputs)\n",
    "#     return model\n",
    "\n",
    "def get_model():\n",
    "    model = tf.keras.Sequential([\n",
    "        tf.keras.layers.Embedding(tokenizer.vocab_size, 64),\n",
    "        tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)),\n",
    "        tf.keras.layers.Dense(64, activation='relu'),\n",
    "        tf.keras.layers.Dense(1, activation='sigmoid')\n",
    "    ])\n",
    "    return model\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = get_model()\n",
    "model.compile(loss='binary_crossentropy',\n",
    "             optimizer='adam',\n",
    "             metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "391/391 [==============================] - 827s 2s/step - loss: 0.5606 - accuracy: 0.7068 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00\n",
      "Epoch 2/10\n",
      "391/391 [==============================] - 798s 2s/step - loss: 0.4964 - accuracy: 0.7725 - val_loss: 0.5414 - val_accuracy: 0.7545\n",
      "Epoch 3/10\n",
      "391/391 [==============================] - 788s 2s/step - loss: 0.4347 - accuracy: 0.8076 - val_loss: 0.4571 - val_accuracy: 0.8075\n",
      "Epoch 4/10\n",
      "391/391 [==============================] - 795s 2s/step - loss: 0.4185 - accuracy: 0.8129 - val_loss: 0.4733 - val_accuracy: 0.8141\n",
      "Epoch 5/10\n",
      "391/391 [==============================] - 806s 2s/step - loss: 0.3016 - accuracy: 0.8824 - val_loss: 0.4644 - val_accuracy: 0.7839\n",
      "Epoch 6/10\n",
      "391/391 [==============================] - 793s 2s/step - loss: 0.2672 - accuracy: 0.8996 - val_loss: 0.5584 - val_accuracy: 0.7959\n",
      "Epoch 7/10\n",
      "391/391 [==============================] - 796s 2s/step - loss: 0.2302 - accuracy: 0.9144 - val_loss: 0.4058 - val_accuracy: 0.8326\n",
      "Epoch 8/10\n",
      "391/391 [==============================] - 797s 2s/step - loss: 0.1922 - accuracy: 0.9305 - val_loss: 0.4489 - val_accuracy: 0.8362\n",
      "Epoch 9/10\n",
      "391/391 [==============================] - 794s 2s/step - loss: 0.1658 - accuracy: 0.9426 - val_loss: 0.4936 - val_accuracy: 0.8366\n",
      "Epoch 10/10\n",
      "391/391 [==============================] - 791s 2s/step - loss: 0.1333 - accuracy: 0.9548 - val_loss: 0.6117 - val_accuracy: 0.8199\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(train_dataset, epochs=10,\n",
    "                   validation_data=test_dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看训练过程\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def plot_graphs(history, string):\n",
    "    plt.plot(history.history[string])\n",
    "    plt.plot(history.history['val_'+string])\n",
    "    plt.xlabel('epochs')\n",
    "    plt.ylabel(string)\n",
    "    plt.legend([string, 'val_'+string])\n",
    "    plt.show()\n",
    "\n",
    "plot_graphs(history, 'accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xd4VGXax/HvnUICpFBDGhBChwQCAtKbqGABQQWpKgpWVHRVbGsvu7qujVdRrIgKUhQEYVlBitICho6UQEJCCzUJIf15/zhDFpCSQCZnMnN/riuXyeTknDsjmd+c85znfsQYg1JKKQXgZXcBSimlXIeGglJKqSIaCkoppYpoKCillCqioaCUUqqIhoJSSqkiGgpKKaWKaCgopZQqoqGglFKqiI/dBZRUjRo1TFRUlN1lKKVUubJmzZpDxpiaF9uu3IVCVFQU8fHxdpehlFLliogkFWc7vXyklFKqiIaCUkqpIhoKSimlimgoKKWUKqKhoJRSqoiGglJKqSIaCkoppYpoKCillKsrLIT5z8CRRKcfSkNBKaVc3cqPYPkHsGup0w/l1FAQkd4i8qeI7BCRcefZZqCIbBaRTSLyjTPrUUqpcufgVvjvC9CoD7Qe4fTDOa3NhYh4A+OBq4EUYLWIzDLGbD5tm4bAU0AnY8xREQlxVj1KKVXu5OfCjFHgFwh93wMRpx/SmWcK7YAdxphEY0wu8B3Q76xtRgHjjTFHAYwxB51Yj1JKlS+L/wH718ON70JA2bxndmYoRAB7Tvs6xfHY6RoBjUTkNxFZISK9nViPUkqVH8krYdnbEDcMmt5QZoe1u0uqD9AQ6A5EAktEJNYYc+z0jURkNDAaoE6dOmVdo1JKla2cTJh5DwRHQu/Xy/TQzjxTSAVqn/Z1pOOx06UAs4wxecaYXcA2rJA4gzHmY2NMG2NMm5o1L9oOXCmlyrf/PANHd0P/CeAfVKaHdmYorAYaikg9EakA3AbMOmubH7DOEhCRGliXk5x/I65SSrmqbfNhzRfQ6SGo27HMD++0UDDG5AMPAvOBLcBUY8wmEXlJRPo6NpsPHBaRzcAi4HFjzGFn1aSUUi7txGH48UGoFQM9nrGlBKeOKRhj5gJzz3rs76d9boBHHR9KKeW5jIGfHobsYzB8Jvj42VKGzmhWSilXsO472DIbej4LoTG2laGhoJRSdjuWDHMfh7qdoMODtpaioaCUUnYqLISZ91mf3/QheHnbWo7d8xSUUsqzrRgPScug3/9B1bp2V6NnCkopZZsDm+GXl6DJDRA3xO5qAA0FpZSyR34OzBgN/sFWb6MyaHZXHHr5SCml7PDr63BgAwyeApVr2F1NET1TUEqpspa0HJa9A61vh8au1QdUQ0EppcpSTobV7K5qXbj2Nbur+Qu9fKSUUmVp3lNwfA/c+TP4BdhdzV94zJlCWkYO361KxuqsoZRSNtg6F/6YBJ0egTrt7a7mnDwmFCatSGLcjA08OnUdJ3ML7C5Hqb/KOgIbp1uTmZT7yUyDWWMgNBa6P2V3NeflMZePHrmqIT5ewr//u40t+9KZMPwK6lavbHdZSlnyTsI3AyFlNQwogBYD7a5IlSZjYPbD1njCgJ/Ap4LdFZ2Xx5wpeHkJD13VkM/vaMu+49nc8P4yftlywO6ylILCAmtx9pR4CIqAhS9b97Ar9/HH1/DnHOj1PIQ0tbuaC/KYUDile+MQfhrTmTrVKnHXl/G8vWAbBYU6zqBs9J/nrO6Y174Gfd+3mqPFf253Vaq0HN0N88ZBVBe48j67q7kojwsFgNrVKjH9vo7cckUk7/2ynZFfrOZYVq7dZSlPtHKC1fvmynuhw/1QvyfU6wZL/gnZ6XZXpy5XYQHMvBfEy9HszvVfcl2/Qifx9/XmzVta8Gr/GH7feYgb3l/GxtTjdpelPMnWOfDzk1bfm1P3q4tArxcg6zAs/8DO6lRp+P19SF4O170JVWpffHsX4LGhACAiDL2yLlPv6UBBoeHmD39n2poUu8tSniBlDUy7CyJaw4BPzmyXHNEamveH3z+AzIP21aguz/4NsPAVaNoXWgyyu5pik/J2336bNm1MfHx8yX9w/wZrIA/H73vG723IzMln6uo9JB46QbuoKvSJDcO3qEHV2T9z2s+e/djFvgYIawnR3Uv+Oyj3cHQ3TOwFvpXg7l8goOZftzm8E8a3gyvuhOvfKvMS1WXKy4ZPekLWIbhvOVSubndFiMgaY0ybi23nMbeksnMhLPj7eb8dAIwE8AVSHR9OI9b1xbjBzjyIckVZR+DrW6AgD+6cfu5AAKheH1qPgDWfW2MN1aLLtk51eRa9Agc3wdBpLhEIJeE5odBmJMQ67v0uOgOQs762Hlu49QDPz96Cr7fwxoAWtKtX/a9tbc/exwX3e9rXBbkw9Xb48X7rXuWYmy/7V1PlRH4OTBkGx5JgxI9Qo+GFt+/2pLVu78JX4JbPyqZGdfl2L7Mu/bUZCQ2vtruaEvOcy0cltONgJvd+vYbEtEye6N2Ee7pGI6XV7zz3hPVucc9KGPglNL2xdParXFdhoTUXYeM0uPlTiL2leD/3y8uw9C0YvRjC45xbo7p82enwYSfw9oF7l0EF15kgW9zLRx490HwhDUIC+PGBTvSJCeONn7dy39drycjOK52dV6gMQ6dCxBXw/Z3w57zS2a9yXQtftgLhqueLHwgAnR6CitXgvy84rTRViuaNg/QU6P+xSwVCSWgoXEBlPx8+GNKKZ69vyoItB+g3/je2H8gonZ37BcKwaRAaA1OHw45fSme/yvXEfw7L3oYr7oDOY0v2s/7B0PVvkLgIEn91RnWqtGyZDQmToctjULut3dVcMg2FixAR7u4SzeS7ryT9ZB79xv/GnPX7Smfn/sEwbAbUaAzfDYFdS0tnv8p1bF8Acx6DBlfDdf+6tCUX29wFwbVhwfPaLM9VZRywehuFxVljQeWYhkIxtY+uzk9jutAkNJAHvlnLq3M2k19QCn+glarBiB+gahR8MwiSV1z+PpVr2LfOuqmgVnO49XPrOvOl8PWHHs/AvgTY/EPp1qgunzFW99PcEzDgY/D2tbuiy6KhUAKhwf58N7oDIzrU5ZOluxg6cSVpGaXQuKxyDRgxC4LCrAHolDWXv09lr2N7YPJAqFgVhky1LhdejhYDIaSZNTZRUEpjW6p0rP0Sts+HXi9CzcZ2V3PZNBRKqIKPFy/1i+HtgS1Zl3KMG95fypqko5e/48BacPts657mr/vD3oTL36eyR/Zxqw12XhYM/d4K+8vl5W21vziSaL0IKddwJBHmPW31q2o32u5qSoWGwiUa0DqSGfd1ws/Hm9s+Xs6k5bsvf1W3oHArGPyCYFJ/OLCpVGpVZSg/F6YMh0PbYNAkqNWs9Pbd8Bqo0xF+/QfkZJbeftWlOdXsztun3DS7Kw73+C1s0iw8iNkPdqZLw5o89+MmHiuNVd2q1IHbZ4GPP3zVD9K2lU6xyvlOLaSya7HVAju6e+nuXwSufhFOHIQVH5buvlXJ/faONdfoun9BcITd1ZQaDYXLFFzJl4kj2vDo1Y2YmZBK///7jaTDJy5vp9WirWBA4MsbrT44yvUt/ges+wa6jYO4Ic45Ru12VlfV396FE4edcwx1cfvWwaLXoPmAks07KQc0FEqBU1Z1q9HQCobCPPiyLxxNKp1ilXMkfAO/vg4th0D3cc491lV/h7wTsPRfzj2OOre8bJgxGirXhOsv8TZjF6ahUIpKfVW3kKZWj5zcTPjyBjiubb1dUuKv1i2J9brCje86/0WiZmOIGwqrP7FWaVNl65eXIG0r9PvAuqXczTg1FESkt4j8KSI7ROQvb59E5A4RSRORBMfH3c6spyyU+qpuobEwfCacPGZdSsrYX3rFqst3YLM1sFy9IQycVHYLsnd/ylrNa9FrZXM8ZUlcbK2U13YUNOhldzVO4bRQEBFvYDzQB2gGDBaRc92KMcUYE+f4mOisespSqa/qFtEahk23Zk1+2Rcy00qvWHXp0vfB5FutdRGGfg8Vq5TdsYMj4Mp7rC6q+zeW3XE92clj8MP9UL0BXP2S3dU4jTPPFNoBO4wxicaYXOA7oJ8Tj+dSSn1Vt9rtrBeeY8nWXUlZR0qvWFVyOZnWXISTR63mhnYstdh5LPgHWZczlPP9/CRk7LNmLVeoZHc1TuPMUIgA9pz2dYrjsbPdLCLrRWSaiJzzL0tERotIvIjEp6WVr3fJrepUZfaYzrSuU5W/fb+OZ2ZuICf/Em9bjeoEg7+Fwztg0k3WOxdV9gryYdqd1jySW7+wVtKzQ8WqVjBsnw+7f7OnBk+x6QdY/x10e8LqbuzG7B5ong1EGWNaAAuAc07VNMZ8bIxpY4xpU7PmeVaqcmE1AvyYdFc77ukWzeSVyQycsII9R7IubWf1e8Btk61r2V/fbPVvV2XHGJj7N9j+H2uZzEbX2FvPlfdCYDj89/mzlphVpSZjP/z0CIS3tjqgujlnhkIqcPo7/0jOWuTSGHPYGHOqedBEwG0j2Mfbi6f6NOWjYa1JPJjJ9e8tZcHmS7xtteHV1uI8+xKsSxg6u7Xs/PaOtURmp0eslbXs5lvRugU2ZTVsnWN3Ne7n6G5rzZO8bLdodlcczgyF1UBDEaknIhWA24BZp28gIqc3hekLbHFiPS6hd0wYPz3UmTrVKzHqq3henbOZvEvpttrkerh5ojWj8tvbIPcSzzxU8W2YZi12E3OztViOq4gbCjUawS8vWpe21OXLOgLznoL328DeP6xbjS+2fKqbcFooGGPygQeB+Vgv9lONMZtE5CUR6evY7CER2SQi64CHgDucVY8rqVu9MtPv61jUbXXghOWkHjtZ8h017w/9J1hrwk4Zar2bUc6R9Dv8cB/U6QD9/s+1+tx4+1gT2g5ts2ZUq0uXdxKW/RvejYOVH0HcYHjoD2g5yO7Kyoyu0WyzOev38eT09Xh7CW8PbMlVTWuVfCdrJ8GsB6FR77K9V95THNoOE3tZLc7vWuCaE5aMgU+vhuOp8NBa67KSKr7CAuv23kWvQnqq9bfU6wVrAqmb0DWay4nrW4Tx05jORFSpyF1fxvP63C0lv5zUerg13X7bPJg+Ui8hlKbMNGtA38sHhk5zzUAAaxZ1rxcgYy+snGB3NeWHMbD9v/BRF/jxfgioBXfMgSFT3CoQSkJDwQVE1ajMjPs7Mqx9HSYsSeS2j1ewt6SXk9reDb3fsNaJnTnaeuejLk9uFnw7CDIPWi8S1erZXdGFRXW22msve9uaP6EubG+CNedn8s1WL6lbPodRC63n0YNpKLgIf19vXrkplvcGt2LrvnSuf28pi/48WLKdtL/PWv1p43T48UFdz/dyFBbAjFGQuhZu+RQiL3rW7Rquet66TXnZv+2uxHUdTYLpd8PH3WD/BujzT3hgNcQMcLvmdpdCQ8HF9G0ZzuwxnQkNrsidn6/mH/O2lmwt6M6PQPenrQHHOWP13vVLNf8Z2PqTdfbV5Hq7qym+0BhoMci6hHQ89eLbe5KsI9b/1w/aWGfUXR6DhxOsdiE6DlfkElcSV84UXTOAmfd35MXZm/nw153E7z7C+4NbExrsX7wddHsCCnKs1sreftDnH673DsgYSN8LBzaCdwUIirBWnvMLsLsyawGblR9C+/uh/b12V1NyPZ6GTTOsVt79PrC7GvvlZcOqCdbfQ06GtdZF96fdamGc0qSh4KL8fb15fUAs7aOr8dSMDVz33lL+PSiObo2KMaNbBHo+B/k5sPwD613Q1S/bFwzGWG2/9yVY13H3rbM+P3GOliV+wVY4BIU5/htx1n/Dwb+K836XLbOt+9Ob3ADXvOKcYzhb1brWGNPKj6DjGLdYTP6SFBbA+qmw8BVIT4GG11qD8aW5RKob0ltSy4GdaZk8MHktW/dn8ECP+ozt1Qgf72Jc+TMG5j5u9d3v8je46jnnF2uM1bRvn+PFf2+C9XmWY5Uw8YaaTSA8DsLiIKwFFOZbHUfTU62zh6L/7oXMA8BZ/0Z9Kv4vIE4Pi6AIR5hEQKUaJZ9LkBIPX1wPtWKstbLLc9OzE4fh3ZYQ3c1qi+JpdvwCC56HAxusf2fXvGytd+HBintLqp4plAP1awYw8/5OvDh7E+MX7WT17qO8P7gVtYIucjlJxBpEK8iBpW9Z6z53e7z0CjPGagNwRgCsg5OODq5ePlCzKTTuY/1hhreCWs1Ldg99QZ4VDGeHxamPpN+t2zALz7oN18v3fwERFA6BYX896wioZU38AjiSCN8MgsBQGPxd+Q4EgMrVodPDsOgV2LPK6rLrCfats8IgcRFUqQs3f2otmelKkw1dnJ4plDMz/0jh6RkbqVTBm3dui6NLw2JcTiostO7BXvet1Qe+08MlP7Ax1gvn2QGQ7ejU6uVr3dd96gwgPA5CmoNvMcdBLkdhoXUpKj3Vam38lwBxfJ5/1oxv8bKCISjcOlPJPwl3/RdqNHB+zWUh94Q1M7d6A7hzruuNK5WmY8nWZaL1U611Lbo+AW3vAh8/uytzGXqm4Kb6t4okNiKY+yevZcRnqxjTowEP92qEt9cF/uC9vKDfeCjIhQV/twafLzSAWlh4WgCcGgdYDzmOhYK8K0BIM2h+02kB0My+P0AvLwisZX2cjzHWvftnB0WG42svHysw3SUQACpUhu5PwpzHrK6uja61u6LSd/KoNYC8coIV8p0fsZoVluWCR25GzxTKqZO5Bfz9x418vyaF9tHVeO+2VoRc7HJSQR58f4d1q+UN/7a6fBYWWusznBr83ZsA+9dDjqMlt7efdcmnaAygpSMA9Ba+cqEgD8a3s8Zh7l0KXt52V1Q68rJh1cfWZdHsdOuOoh5PQ3Ck3ZW5rOKeKWgolHPT1qTw3A8bqeznw7u3xdGpQY0L/0B+LkwZZi3MEtkWDm6BXEfrbR9/a5D1jABo6hHtgt3axukwbSTc5GjwVp4VFsKG72Hhy3B8DzS42rqjKDTG7spcnoaCB9l+IIP7J69lR1omD1/VkDE9G174clJeNvw01jpDCHe8+IfFWbcuagC4n8JC+KSHNXlrTHz5vc6+cxEseM6ahRzW0rrcF93d7qrKDQ0FD5OVm8+zP2xkxtpUOtavzju3xRESWAaDvKp82LnIWsL12tehw/12V1My+zdYY2E7F0KVOtDz79aaFnpHUYlol1QPU6mCD28PjOOft7RgbfJRrn9vGb/vPGR3WcpV1O8B0T1gyZuQfdzuaorn2B6Yea/VwTR1LVz7GjwYDy1u1UBwIn1m3czANrX58YHOBPn7MGziSt77ZTsFheXrbFA5Sa8XrDkkv79vdyUXlpkGP4+D91vDxhnQ6SGrR1GHB8rvpa9yREPBDTUODWTWg53pFxfB2wu2ccfnqziUmXPxH1TuLTzOmsi1fLy1GL2ryT5uzTV4t6XVq6jFIBizxho7qFjV7uo8hoaCm6rs58PbA1vyj5tjWbXrCNe9u5QViYftLkvZreez1nyVxf+0u5L/yc2C3961wmDJm9DwanhgldXMr0ptu6vzOBoKbkxEGNS2Dj880IkAPx+GfLKCDxZup1AvJ3mu6vXhijtgzRdweKe9tRTkwepP4b1W1kByxBUwejEM/BJqNLS3Ng+moeABmoYFMWtMZ25oEc5b/9nGHV+s5rBeTvJcXZ+w5qQsfNme45/qXvpBG5jzKFSNgjvmwrDp1iUuZSsNBQ8R4Jjc9lr/WFYkHua695YydfUeth3I0IFoTxNYyxq03TTTuqunrBgDW+fCR52tVe0qBMKQ72HkPIjqVHZ1qAvSeQoeaPPedB78Zi2Jh04AUNHXm6ZhgcRGBBPj+GgYElC89tyqfMpOh/fiHG3CZzn/eLuWwi8vQcoqqBYNPZ7R7qVlTCevqQsqKDQkpmWyIfU4G1PT2Zh6nE17j3MitwAAPx8vmoQFERsRRGxEMM3Dg2lUK5AKPvpH7DZWfAjzxsHwmVC/p3OOkbrWCoPERRAYbjXoixuqM+dtoKGgSqyw0LDr8Ak2ph5nY+pxNqQeZ1NqOhk51loFFby9aBIWSPPwYGIjrI9GoQH4+bhJkzVPk59jXdf3r2IN8Jbmu/a0P60xiy2zoWI1az3ktneVbC0NVao0FFSpKCw0JB/JcpxRHGfj3uNsSDlOerYVFL7eQqNagcSEBxMTaQVFk9BA/H01KMqFdVNg5mhrMZrYWy5/f0eT4Nc3YP134FsJOjxojV/4B13+vtVl0VBQTmOMIeXoSTY4ziZOnVkczcoDwNtLaBgScMYYRbOwICpW0KBwOYWFMKGL1Sn3gdWX3hI98yAseQviP7PWNWg3Cjo/aq0Ap1yChoIqU8YYUo+dLBqf2LjXCopDmbkAeAk0CAmwQiI8mNhIKygq++k6T7bbvgAm3wLXvWW9mJfEyWPw+3vW+ER+DrQaBt2ehOAI59SqLpmGgrKdMYb96dlsTE0/44ziYIY1R0LEWn/62eub0r1xiM3VejBj4Isb4NCf8FAC+AVc/GdyT1irnf32jtWeIuZm646i6vWdX6+6JBoKymUdTM92jE2k8+O6VA5n5jL/ka6EBmurb9vsWQ2f9oLuT1t3CJ1Pfi6s/dJqR5F5ABpea7XOCGtRdrWqS6Kts5XLCgnyp2eTWjzcqyETR7QhN7+Qx6et0/YbdqrdFpreaF0KOnGOluuFBbDuO+tupbl/g2r14c55MHSqBoKb0VBQtoquGcAz1zdl6fZDfLV8t93leLaef4e8LOss4BRjYMtP8GEnmHkP+AfD0Olw51yo28G+WpXTaCgo2w29sg49m4Tw+s9b2X4gw+5yPFfNRtBquNWk7uhuSPwVJl4FU4ZCYR7c+oU1n6FhL2tASLklp4aCiPQWkT9FZIeIjLvAdjeLiBGRi17vUu5HRHjj5lgq+/nwyJQEcvML7S7Jc3UfB17e8ElP+KofZByAvu/D/SuheX9tS+EBnPZ/WES8gfFAH6AZMFhEmp1ju0DgYWCls2pRri8k0J83BsSyaW867/x3m93leK6gcOj6N/DytdZzHrMGWo8Ab7112FM4M/bbATuMMYnGmFzgO6DfObZ7GfgHkO3EWlQ5cE3zUAa1qc1Hi3eyevcRu8vxXF0fh7/9CR3uB1+9I8zTODMUIoA9p32d4nisiIi0BmobY+Y4sQ5Vjjx3YzMiq1Zi7JQEMrLz7C5HKY9j2wVCEfEC3gYeK8a2o0UkXkTi09LSnF+csk2Anw//HtSSvcdO8uLszXaXo5THcWYopAKnL7Aa6XjslEAgBvhVRHYD7YFZ5xpsNsZ8bIxpY4xpU7NmTSeWrFzBFXWrcX/3Bkxbk8K8jfvsLkcpj+LMUFgNNBSReiJSAbgNKFrNwxhz3BhTwxgTZYyJAlYAfY0xOl1Z8XCvhsRGBPPUjA0cTNfhJqXKitNCwRiTDzwIzAe2AFONMZtE5CUR6eus4yr34Ovtxb8HxXEyr4DHp62nvLVjUaq8KlYoiMjDIhIklk9FZK2IXHOxnzPGzDXGNDLG1DfGvOp47O/GmL+s/2eM6a5nCep0DUICePq6pizelsakFUl2l6OURyjumcJIY0w6cA1QFRgOvOG0qpRyGN6+Lt0a1eTVOVvYcTDT7nKUcnvFDYVTc9qvAyYZYzad9phSTiMivHlLCypV8GasznZWyumKGwprROQ/WKEw3zELWf86VZkICfLn9QGxbEg9znu/bLe7HKXcWnFD4S5gHNDWGJMF+AJ3Oq0qpc7SOyaMW66I5P9+3cGaJJ3trJSzFDcUOgB/GmOOicgw4FnguPPKUuqvnr+xGeFVKjJ2yjoyc/LtLkcpt1TcUPgQyBKRllgzkHcCXzmtKqXOIdDfl38PiiPlaBYvzd5kdzlKuaXihkK+sW4U7wd8YIwZjzUjWaky1TaqGvd2q8/U+BTmb9pvdzlKuZ3ihkKGiDyFdSvqHEffIl/nlaXU+T3SqxExEUHWbOcMne2sVGkqbigMAnKw5ivsx+pj9OaFf0Qp56jg48U7g+I4kZPPkzrbWalSVaxQcATBZCBYRG4Aso0xOqagbNMgJJCn+jRh0Z9pTF6ZbHc5SrmN4ra5GAisAm4FBgIrReQWZxam1MWM6BBFl4Y1eHXOFhLTdLazUqWhuJePnsGao3C7MWYE1qpqzzmvLKUuzstLeOvWlvj5ejF2SgJ5BTqfUqnLVdxQ8DLGHDzt68Ml+FmlnKZWkD+v9Y9lXcpx3l+4w+5ylCr3ivvCPk9E5ovIHSJyBzAHmOu8spQqvutiwxjQOoLxi3awNvmo3eUoVa4Vd6D5ceBjoIXj42NjzJPOLEypknihb3NCg/wZOyWBEzrbWalLVuxLQMaY6caYRx0fM51ZlFIlFeSY7Zx8JItX5ujazkpdqguGgohkiEj6OT4yRCS9rIpUqjja1avGPV3r8+2qPSzYfMDucpQqly4YCsaYQGNM0Dk+Ao0xQWVVpFLF9ejVjWgWFsS46etJy8ixuxylyh29g0i5lQo+XrxzWxwZOfmMm66znZUqKQ0F5XYa1QpkXO8m/LL1IN+u2mN3OUqVKxoKyi3d0TGKzg1q8PJPm9l16ITd5ShVbmgoKLd0arZzBR9rtnO+znZWqlg0FJTbCg3255WbYkjYc4wPFulsZ6WKQ0NBubUbW4ZzU1w47y/cwR8621mpi9JQUG7vxX4x1Ar049Gp68jK1dnOSl2IhoJye8EVffnXwDh2Hz7Bq3O22F2OUi5NQ0F5hA71qzOqSzSTVyazcKvOdlbqfDQUlMd47JpGNAkN5IlpGzicqbOdlToXDQXlMfx8vHnntjjST+YxbsYGne2s1DloKCiP0iQ0iCd6N2bB5gNMjdfZzkqdTUNBeZyRnerRsX51Xpy9maTDOttZqdNpKCiPc2q2s4+X6Gxnpc7i1FAQkd4i8qeI7BCRcef4/r0iskFEEkRkmYg0c2Y9Sp0SXqUiL98Uw9rkY3z46067y1HKZTgtFETEGxgP9AGaAYPP8aL/jTEm1hgTB/wTeNtZ9Sh1tn5xEfRtGc67v2xnfcoxu8tRyiU480yhHbDDGJNojMkFvgP6nb6BMeb01dsqA3o7iCpTL/eLoWagH49MSeBgRrbd5ShlO2eGQgRw+u0dKY7HziBsOOspAAAVv0lEQVQiD4jITqwzhYecWI9SfxFcyZd/DWxJ8uEsOr2xkDHf/sHq3Uf0dlXlsWwfaDbGjDfG1AeeBJ491zYiMlpE4kUkPi0trWwLVG6vY/0aLHi0G8PbR/Hrnwe59aPlXPfeMr5dlay9kpTHEWe9IxKRDsALxphrHV8/BWCMef0823sBR40xwRfab5s2bUx8fHxpl6sUAFm5+fzwx16+Wr6brfszCPT34dYrajO8Q13q1ahsd3lKXTIRWWOMaXPR7ZwYCj7ANuAqIBVYDQwxxmw6bZuGxpjtjs9vBJ6/WNEaCqosGGOITzrKV8uT+HnDPvILDV0a1mBEhyh6NgnB20vsLlGpEiluKPg4qwBjTL6IPAjMB7yBz4wxm0TkJSDeGDMLeFBEegF5wFHgdmfVo1RJiAhto6rRNqoaB29oyner9vDNymRGfRVPRJWKDGtfl0Fta1OtcgW7S1WqVDntTMFZ9ExB2SWvoJAFmw/w1fLdrEg8QgUfL25oEcaIDlHE1a5id3lKXZDtl4+cRUNBuYJtBzKYtDyJGWtTOJFbQMvIYIZ3iOKGFmH4+3rbXZ5Sf6GhoFQZyMjOY+YfqXy1PIkdBzOpWsmXgW1rM+zKutSuVsnu8pQqoqGgVBkyxrB852G+Wp7Egi0HKDSGno1DGNExii4NauClA9PKZhoKStlk3/GTfLMymW9XJXMoM5eo6pUY1r4ut15Rm+BKvnaXpzyUhoJSNsvJL2Dexv18tTyJNUlH8ff14qa4CIZ3qEvz8AtOx1Gq1GkoKOVCNu09zqTlSfyQkEp2XiFt6lZleIe69IkJo4KP7Y0FlAfQUFDKBR3PyuP7NXv4ekUSuw9nUSPAj8HtajPkyjqEBVe0uzzlxjQUlHJhhYWGJdvTmLQ8iYV/HsRLhKub1mJEx7p0iK6OiA5Mq9Jl+4xmpdT5eXkJ3RuH0L1xCHuOZPH1yiSmrt7DvE37aRYWxOiu0VzfIgxfb720pMqWniko5SKy8wr44Y9UJi7bxY6DmYQF+zOyUz1ua1ebQH+9a0ldHr18pFQ5VVho+HXbQT5ZsovliYcJ9PNh8JV1uKNjFOFVdNxBXRoNBaXcwIaU43yyNJE5G/YhwI0tw7m7Sz29pVWVmIaCUm4k5WgWn/+2m+9WJXMit4BODaozqks03RrV1EFpVSwaCkq5oeMn8/h2VTKf/7aLA+k5NK4VyN1d6tE3Lhw/H23Ep85PQ0EpN5abX8jsdXv5ZGkiW/dnEBLoxx2dohjarq620lDnpKGglAcwxrBsxyE+XpLI0u2HqFTBm0FtazOyUz3t0qrOoKGglIfZvDedicsSmZWwl0Jj6BMbxugu0bTUBYAUGgpKeax9x0/yxe+7+WZFMhk5+bSrV43RXaLp2SREW3h7MA0FpTxcRnYeU1bv4fPfdpN67CTRNSszqks0/VtF6OpwHkhDQSkFWGtLz92wj0+WJrIxNZ0aARUY0SGKYe3rUq1yBbvLU2VEQ0EpdQZjDCsSj/DJ0kQWbj2Iv68Xt1wRyV2do6lXo7Ld5Skn04Z4SqkziAgd6lenQ/3qbD+QwcSlu5i6OoXJK5O5plktRneN5oq61ewuU9lMzxSU8mAHM7L56vckJq1I4vjJPFrXqcLortFc3SwUbx2Udit6+UgpVWxZufl8H5/Cp8t2kXwki7rVKzGqSzS3XBGpg9JuQkNBKVViBYWG+Zv2M2FJIuv2HKNGQAXu6BjF8PZROlO6nNNQUEpdslOD0hOW7OTXP9OoXMGbwe3qMLJzPW3fXU5pKCilSsWWfel8vCSRWev2IkC/uAju6RZNo1qBdpemSkBDQSlVqlKOZvHpsl18t2oPJ/MKuKpJCPd0q0/bqKravrsc0FBQSjnF0RO5TFqRxBe/7+bIiVxa16nCPd3qc3XTWtpGw4VpKCilnOpkbgHT1uzh46WJ7DlitdG4p2s0N7WK0LUdXJCGglKqTOQXFDJ3434mLN7Jpr3phAT6MbJzPYZcWYcgf71jyVVoKCilytSptR0mLE5k2Y5DBPr5MKR9He7qVI+QIH+7y/N4GgpKKdtsSDnOhCU7mbthHz5eXgxoHcGortHUrxlgd2keyyVCQUR6A+8C3sBEY8wbZ33/UeBuIB9IA0YaY5IutE8NBaXKj6TDJ6weS/F7yC0o5JpmtbinW31a16lqd2kex/ZQEBFvYBtwNZACrAYGG2M2n7ZND2ClMSZLRO4DuhtjBl1ovxoKSpU/hzJz+Or33Xy53Oqx1K5eNe7tFk2PxiF6O2sZcYVQ6AC8YIy51vH1UwDGmNfPs30r4ANjTKcL7fdcoZCXl0dKSgrZ2dmlUru78vf3JzIyEl9fHfxT9jiRk8+U1XuYuDSRvcezaVwrkNFdo+kbF46vt5fd5bk1VwiFW4Dexpi7HV8PB640xjx4nu0/APYbY145x/dGA6MB6tSpc0VS0plXmHbt2kVgYCDVq1fXdx3nYYzh8OHDZGRkUK9ePbvLUR4ur6CQn9bvZcLiRLbuzyA82J+RnesxuF0dKvtpR39nKG4ouEQ0i8gwoA3w5rm+b4z52BjTxhjTpmbNmn/5fnZ2tgbCRYgI1atX17Mp5RJ8vb3o3yqSnx/uwud3tqV2tUq8MmcLHd9YyFvz/+RQZo7dJXosZ0ZyKlD7tK8jHY+dQUR6Ac8A3Ywxl/wvQQPh4vQ5Uq5GROjROIQejUP4I/koExYnMv7XHXyyNJFbrojkzk5RNAjRHktlyZmhsBpoKCL1sMLgNmDI6Rs4xhEmYF1mOujEWpwuICCAzMxMu8tQqtxqVacqHw2/gsS0TD5Zmsj38daqcA1DAugTE8q1MaE0CwvSNzdO5rRQMMbki8iDwHysW1I/M8ZsEpGXgHhjzCysy0UBwPeO/9HJxpi+zqpJKeX6omsG8PqAFoy9uhE/b9jPzxv38cGiHby3cAd1qlWid0wovWNCiYusor2WnMAtJq9t2bKFpk2b2lSR5dSZgjGGJ554gp9//hkR4dlnn2XQoEHs27ePQYMGkZ6eTn5+Ph9++CEdO3bkrrvuIj4+HhFh5MiRjB071ql1usJzpVRJHcrM4b+bD/Dzxv38vvMQeQWG0CB/rm1ei2tjQmkXVQ0fvXvpgoo70Ox2w/wvzt7E5r3ppbrPZuFBPH9j82JtO2PGDBISEli3bh2HDh2ibdu2dO3alW+++YZrr72WZ555hoKCArKyskhISCA1NZWNGzcCcOzYsVKtWyl3USPAj9va1eG2dnU4fjKPhVsPMG/jfqbE7+HL5UlUq1yBq5vWondsKB3rV9eGfJfB7ULBbsuWLWPw4MF4e3tTq1YtunXrxurVq2nbti0jR44kLy+Pm266ibi4OKKjo0lMTGTMmDFcf/31XHPNNXaXr5TLC67oS/9WkfRvFUlWbj6L/0zj5437mbNhH1Pi9xDo58NVTUPoHRNKt0YhVKygAVESbhcKxX1HX9a6du3KkiVLmDNnDnfccQePPvooI0aMYN26dcyfP5+PPvqIqVOn8tlnn9ldqlLlRqUKPvSJDaNPbBg5+QX8tuMQ8zbuZ8HmA/yQsBd/Xy+6NwqhT2woPZqEaNfWYnC7ULBbly5dmDBhArfffjtHjhxhyZIlvPnmmyQlJREZGcmoUaPIyclh7dq1XHfddVSoUIGbb76Zxo0bM2zYMLvLV6rc8vPxpmeTWvRsUov8gkJW7TrCzxv3M3/TfuZt2k8Fby86NahO75hQrm4WSrXKFewu2SVpKJSy/v37s3z5clq2bImI8M9//pPQ0FC+/PJL3nzzTXx9fQkICOCrr74iNTWVO++8k8LCQgBef/2cHUCUUiXk4+1FxwY16NigBi/2bc4fe44yb+N+ft64n0XTN/DUjA1cWa86fWJDuaZZKKHB2tr7FL37yMPoc6U8mTGGTXvTmbfROnvYcdCaW9S6ThXrVtfmYdSpXsnmKp3DY+8+Ukqp8xERYiKCiYkI5m/XNmbHwYyigHht7lZem7uVZmFB9HHMhWhYy/NmU2soKKU8VoOQQB7sGciDPRuy50hWUUD8a8E2/rVgG/VrVqZ3TCg3xUV4TEBoKCilFFC7WiVGdY1mVNdoDqRn859N1hjER4sTGb9oJ22jqjK4XR2uiw3D39d9b3PVUFBKqbPUCvJneIcohneI4nBmDtPXpvDtqj08OnUdL87ezIDWEQxpV8ctzx40FJRS6gKqB/gxumt9RnWJZnniYb5dtYevVyTx+W+73fLsQUNBKaWKQUToWL8GHevX4HBmM7c9e9BQUEqpEjr77OGblclnnD0MubIOfWLK59mDthW0QUBAwHm/t3v3bmJiYsqwGqXUpTp19vDBkNaseOoqnurThLSMHMZOWceVr/3CS7M3s+Nght1lloieKSilVCmoHuDHPd3qM7rr/84eJq3YzWe/7aJdVDUGX1m7XJw9uF8o/DwO9m8o3X2GxkKfN8777XHjxlG7dm0eeOABAF544QV8fHxYtGgRR48eJS8vj1deeYV+/fqV6LDZ2dncd999xMfH4+Pjw9tvv02PHj3YtGkTd955J7m5uRQWFjJ9+nTCw8MZOHAgKSkpFBQU8NxzzzFo0KDL+rWVUiV3+tjDocwcpq9J4dtVyYydso4XZm3m5taRDLmytssuM+p+oWCDQYMG8cgjjxSFwtSpU5k/fz4PPfQQQUFBHDp0iPbt29O3b98SLSU4fvx4RIQNGzawdetWrrnmGrZt28ZHH33Eww8/zNChQ8nNzaWgoIC5c+cSHh7OnDlzADh+/LhTflelVPHVcJw9jOoSzYrEw3yzyvXPHtwvFC7wjt5ZWrVqxcGDB9m7dy9paWlUrVqV0NBQxo4dy5IlS/Dy8iI1NZUDBw4QGhpa7P0uW7aMMWPGANCkSRPq1q3Ltm3b6NChA6+++iopKSkMGDCAhg0bEhsby2OPPcaTTz7JDTfcQJcuXZz16yqlSsjLS4oa9J199vDi7M0MaOU6Zw860FxKbr31VqZNm8aUKVMYNGgQkydPJi0tjTVr1pCQkECtWrXIzs4ulWMNGTKEWbNmUbFiRa677joWLlxIo0aNWLt2LbGxsTz77LO89NJLpXIspVTpOnX2sPCx7nxz95V0alCDSSt20+vtJQz8aDk//JFKdl6BbfW535mCTQYNGsSoUaM4dOgQixcvZurUqYSEhODr68uiRYtISkoq8T67dOnC5MmT6dmzJ9u2bSM5OZnGjRuTmJhIdHQ0Dz30EMnJyaxfv54mTZpQrVo1hg0bRpUqVZg4caITfkulVGk539nDI1MSqDLbl5tbRzK4XdmfPWgolJLmzZuTkZFBREQEYWFhDB06lBtvvJHY2FjatGlDkyZNSrzP+++/n/vuu4/Y2Fh8fHz44osv8PPzY+rUqUyaNAlfX19CQ0N5+umnWb16NY8//jheXl74+vry4YcfOuG3VEo5w9ljD5NXJfPV8t18umwX7epVY0i7OvSOCS2TsQddT8HD6HOlVPlwKDOHaY6zh6TDWVSp5MuLfZvTLy7ikvan6ykopVQ5ViPAj3u71Wf0qVnTq5KJrFrR6cfVULDJhg0bGD58+BmP+fn5sXLlSpsqUkq5Ii8voVODGnRqUKNMjqehYJPY2FgSEhLsLkMppc7gNreklrexETvoc6SUuhi3CAV/f38OHz6sL3oXYIzh8OHD+Pv7212KUsqFucXlo8jISFJSUkhLS7O7FJfm7+9PZGSk3WUopVyYW4SCr68v9erVs7sMpZQq99zi8pFSSqnSoaGglFKqiIaCUkqpIuWuzYWIpAEl7y5nqQEcKsVyyjt9Ps6kz8f/6HNxJnd4PuoaY2pebKNyFwqXQ0Tii9P7w1Po83EmfT7+R5+LM3nS86GXj5RSShXRUFBKKVXE00LhY7sLcDH6fJxJn4//0efiTB7zfHjUmIJSSqkL87QzBaWUUhfgMaEgIr1F5E8R2SEi4+yuxy4iUltEFonIZhHZJCIP212TKxARbxH5Q0R+srsWu4lIFRGZJiJbRWSLiHSwuya7iMhYx9/JRhH5VkTcvqOkR4SCiHgD44E+QDNgsIg0s7cq2+QDjxljmgHtgQc8+Lk43cPAFruLcBHvAvOMMU2Alnjo8yIiEcBDQBtjTAzgDdxmb1XO5xGhALQDdhhjEo0xucB3QD+ba7KFMWafMWat4/MMrD/4S1v01U2ISCRwPTDR7lrsJiLBQFfgUwBjTK4x5pi9VdnKB6goIj5AJWCvzfU4naeEQgSw57SvU/DwF0IAEYkCWgGevgboO8ATQKHdhbiAekAa8LnjctpEEalsd1F2MMakAm8BycA+4Lgx5j/2VuV8nhIK6iwiEgBMBx4xxqTbXY9dROQG4KAxZo3dtbgIH6A18KExphVwAvDIMTgRqYp1RaEeEA5UFpFh9lblfJ4SCqlA7dO+jnQ85pFExBcrECYbY2bYXY/NOgF9RWQ31mXFniLytb0l2SoFSDHGnDp7nIYVEp6oF7DLGJNmjMkDZgAdba7J6TwlFFYDDUWknohUwBosmmVzTbYQEcG6XrzFGPO23fXYzRjzlDEm0hgThfXvYqExxu3fDZ6PMWY/sEdEGjseugrYbGNJdkoG2otIJcffzVV4wKC7W6y8djHGmHwReRCYj3UHwWfGmE02l2WXTsBwYIOIJDgee9oYM9fGmpRrGQNMdryBSgTutLkeWxhjVorINGAt1l17f+ABM5t1RrNSSqkinnL5SCmlVDFoKCillCqioaCUUqqIhoJSSqkiGgpKKaWKaCgo5WQi0l27r6ryQkNBKaVUEQ0FpRxEZJiIrBKRBBGZ4FhjIVNE/u3oqf+LiNR0bBsnIitEZL2IzHT0yUFEGojIf0VknYisFZH6jt0HnLZGwWTHDFlE5A3H2hbrReQtm351pYpoKCgFiEhTYBDQyRgTBxQAQ4HKQLwxpjmwGHje8SNfAU8aY1oAG057fDIw3hjTEqtPzj7H462AR7DW84gGOolIdaA/0Nyxn1ec+1sqdXEaCkpZrgKuAFY72n9chfXiXQhMcWzzNdDZseZAFWPMYsfjXwJdRSQQiDDGzAQwxmQbY7Ic26wyxqQYYwqBBCAKOA5kA5+KyADg1LZK2UZDQSmLAF8aY+IcH42NMS+cY7tL7QuTc9rnBYCPMSYfawGoacANwLxL3LdSpUZDQSnLL8AtIhICICLVRKQu1t/ILY5thgDLjDHHgaMi0sXx+HBgsWMluxQRucmxDz8RqXS+AzrWtAh2NCMci7X0pVK28oguqUpdjDFms4g8C/xHRLyAPOABrEVm2jm+dxBr3AHgduAjx4v+6Z1EhwMTROQlxz5uvcBhA4EfHYvBC/BoKf9aSpWYdklV6gJEJNMYE2B3HUqVFb18pJRSqoieKSillCqiZwpKKaWKaCgopZQqoqGglFKqiIaCUkqpIhoKSimlimgoKKWUKvL/KxVLV0LhUsUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_graphs(history, 'loss')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    391/Unknown - 68s 174ms/step - loss: 0.6117 - accuracy: 0.8199test loss:  0.6117385012262008\n",
      "test acc:  0.81988\n"
     ]
    }
   ],
   "source": [
    "test_loss, test_acc = model.evaluate(test_dataset)\n",
    "print('test loss: ', test_loss)\n",
    "print('test acc: ', test_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上述模型不会mask掉序列的padding，所以如果在有padding的寻列上训练，测试没有padding的序列时可能有所偏差。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "def pad_to_size(vec, size):\n",
    "    zeros = [0] * (size-len(vec))\n",
    "    vec.extend(zeros)\n",
    "    return vec\n",
    "\n",
    "def sample_predict(sentence, pad=False):\n",
    "    \n",
    "    tokened_sent = tokenizer.encode(sentence)\n",
    "    if pad:\n",
    "        tokened_sent = pad_to_size(tokened_sent, 64)\n",
    "    pred = model.predict(tf.expand_dims(tokened_sent, 0))\n",
    "    return pred\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.2938048]]\n"
     ]
    }
   ],
   "source": [
    "# 没有padding的情况\n",
    "sample_pred_text = ('The movie was cool. The animation and the graphics '\n",
    "                    'were out of this world. I would recommend this movie.')\n",
    "predictions = sample_predict(sample_pred_text, pad=False)\n",
    "print(predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.42541984]]\n"
     ]
    }
   ],
   "source": [
    "# 有paddin的情况\n",
    "sample_pred_text = ('The movie was cool. The animation and the graphics '\n",
    "                    'were out of this world. I would recommend this movie.')\n",
    "predictions = sample_predict(sample_pred_text, pad=True)\n",
    "print (predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 堆叠更多的lstm层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.keras import layers\n",
    "model = keras.Sequential(\n",
    "[\n",
    "    layers.Embedding(tokenizer.vocab_size, 64),\n",
    "    layers.Bidirectional(layers.LSTM(64, return_sequences=True)),\n",
    "    layers.Bidirectional(layers.LSTM(32)),\n",
    "    layers.Dense(64, activation='relu'),\n",
    "    layers.Dense(1, activation='sigmoid')\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.compile(loss=tf.keras.losses.binary_crossentropy,\n",
    "             optimizer=tf.keras.optimizers.Adam(),\n",
    "             metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/6\n",
      "391/391 [==============================] - 1646s 4s/step - loss: 0.5270 - accuracy: 0.7414 - val_loss: 0.0000e+00 - val_accuracy: 0.0000e+00\n",
      "Epoch 2/6\n",
      "391/391 [==============================] - 1576s 4s/step - loss: 0.3900 - accuracy: 0.8320 - val_loss: 0.5222 - val_accuracy: 0.7726\n",
      "Epoch 3/6\n",
      "391/391 [==============================] - 1568s 4s/step - loss: 0.3559 - accuracy: 0.8538 - val_loss: 0.4429 - val_accuracy: 0.8162\n",
      "Epoch 4/6\n",
      "391/391 [==============================] - 1590s 4s/step - loss: 0.2504 - accuracy: 0.9059 - val_loss: 0.4470 - val_accuracy: 0.8091\n",
      "Epoch 5/6\n",
      "391/391 [==============================] - 1608s 4s/step - loss: 0.1977 - accuracy: 0.9280 - val_loss: 0.4762 - val_accuracy: 0.8222\n",
      "Epoch 6/6\n",
      "391/391 [==============================] - 1622s 4s/step - loss: 0.1619 - accuracy: 0.9430 - val_loss: 0.5484 - val_accuracy: 0.7808\n"
     ]
    }
   ],
   "source": [
    "history=model.fit(train_dataset, epochs=6, validation_data=test_dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_graphs(history, 'accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_graphs(history, 'loss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    391/Unknown - 125s 320ms/step - loss: 0.5484 - accuracy: 0.7808[0.5484032468570162, 0.78084]\n"
     ]
    }
   ],
   "source": [
    "res = model.evaluate(test_dataset)\n",
    "print(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
